Flash memory is a type of electrically erasable programmable read-only memory (EEPROM) that can be erased and reprogrammed in blocks instead of one byte at a time. The flash storage is made of a large number (in the millions or more) of memory gates (e.g., NAND memory gates) on a die (e.g., a silicon die). The die contains one or more planes. Each plane contains a number of blocks, which are the smallest unit that can be erased. In turn, each block contains a number of pages which are the smallest unit that can be programmed (e.g., written to).
Quad-level cell (QLC) NAND flash devices are a type of flash memories. A QLC NAND flash device stores four bits in a single cell. Such devices are an excellent match for solid-state drive (SSD) products for cold storage applications in data centers. For example, QLC NAND flash devices are expected to provide high density storage at a relatively lower cost and small form factors compared to single, multiple, and triple level cell flash memories. However, the reliability of these devices is challenged by the increase in the number of bits per cell as well as the longer data retention times for cold storage applications.
Error correcting code (ECC) refers to codes that add redundant data, or parity data, to a message, such that the message can be recovered by a receiver even when a number of errors were introduced, either during the process of transmission, or storage. In general, the ECC can correct the errors up to the capability of the code being used. Error-correcting codes are frequently used in communications, as well as for reliable storage in media such as in flash memories.